# 函数是什么

# 编程中的函数 和数学中的函数的区别

# y = f(x)  



#  函数定义  以def为关键字 
# 无参函数
# def func1():
#     print("hello function")
#     print("hello blender addons")
#     print("hello coder!")
#     print("This is n:",n)

# func()


# 简单的带参数函数
# def func2(n):
#     for i in range(n):
#         print("hello i:",i)

# func2(10)

# 多参数函数
# def func3(n1,n2):
#     for i in range(n1):
#         print("hello i:",i)
#     for j in range(n2):
#         print("hello J:",j)

# func3(3,4)
# 函数参数传递的时候需要注意函数参数的类型和 函数内部的代码是否相符

# 求 1-100
# my_sum = 0
# for i in range(101):
#     my_sum = my_sum + i
# print("Sum 1-100:",my_sum)

# # 函数的优势
# def sum_calc(n):
#     my_sum = 0
#     for i in range(1,n+1):
#         my_sum = my_sum+i

#     print("Sum 1-100:",my_sum)

# sum_calc(100)
# sum_calc(1000)
# sum_calc(10)


# 默认参数  
# def printTQ(temperature,is_sun=True):
#     print("Today temperature:",temperature,"℃")
#     if is_sun:
#         print("Today is a sunny day")
#     else:
#         print("Today is not a sunny day")

# printTQ(25)

# 默认参数 用于缺省值，，应用场景是 处理大多数情况和少数情况的区别
# 大多数情况 可以不用传入，而只需要在少数情况下需要使用的特例
# ***默认参数 需要放在非默认参数的后面，防止调用函数的时候出现错误

# def printTQ(temperature=20,is_sun=True):
#     print("Today temperature:",temperature,"℃")
#     if is_sun:
#         print("Today is a sunny day")
#     else:
#         print("Today is not a sunny day")

# printTQ(is_sun=False,temperature=25)
# 指定参数名 可以交换函数传递的顺序  但是需要谨慎  避免传递参数错误


# 强制指定参数传入
# def force_params(n1,n2,*,n3,n4):
#     print("n1:",n1)
#     print("n2:",n2)
#     print("n3:",n3)
#     print("n3:",n4)

# force_params(1,2,n3=3,n4=4)

# 可以让参数 n3 n4 只能通过指定参数名的方式进行传递




